#ifndef DESEMPAQUETADORSOAP_H_
#define DESEMPAQUETADORSOAP_H_

#include "ParserSoap.h"

class DesempaquetadorSoap: public ParserSoap {
public:
/* Constructor de la clase.
 * Pre: -
 * Post: Clase instanciada.
 */
	DesempaquetadorSoap();
/* Destructor de la clase.
* Pre: -
* Post: instancia liberada.
*/
	virtual ~DesempaquetadorSoap();
/* recibe una ruta a un archivo XML parseado como SOAP y devuelve un puntero a un documento XML sin el
 * envotorio.
 * Pre: -
 * Post: -
 */
	xmlDocPtr Desempaquetar(char * rutaArchivo);
/* recibe una ruta a un puntero a un buffer con un XML parseado como SOAP y devuelve un entero que
 * representa las entradas que se indicaban en el archivo.
 * Pre: Archivo doc de tipo SOAP que indique las entradas.
 * Post: -
 */
	int obtenerEntradas(xmlDocPtr doc);
/* recibe una ruta a un puntero a un buffer con un XML parseado como SOAP y devuelve un entero que
 * representa las salidas que se indicaban en el archivo.
 * Pre: Archivo doc de tipo SOAP que indique las salidas.
 * Post: -
 */
	int obtenerSalidas(xmlDocPtr doc);
/* recibe una ruta a un puntero a un buffer con un XML parseado como SOAP y devuelve un string que
 * representa el conjunto de salidas y tiempos de esas salidas con el formato "112|025|014|115".
 * Pre: Archivo doc de tipo SOAP que indique la combinacion descripta.
 * Post: -
*/
	std::string obtener_simulacion(xmlDocPtr doc);
/* recibe una ruta a un puntero a un buffer con un XML parseado como SOAP, devuelviendo un entero que
 * indica si la operacion fue correcta. Ademas devuelve en los parametros pasados como referencia
 * el nombre del circuito a buscar, la orden a realizar y la combinacion de entradas en caso de que la
 * orden lo requiera(solo para "simular").
 * Pre: Archivo doc de tipo SOAP que indique la orden y los datos pedidos.
 * Post: -
*/
	int obtener_orden_a_realizar(xmlDocPtr doc, std::string& circuito, std::string& orden
			 ,std::string& entradas);
};

#endif /* DESEMPAQUETADORSOAP_H_ */
